package com.example.yingpianguangli.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.List;
import java.util.Objects;
@Data // 提供所有的getter和setter, equals, canEqual, hashCode 和 toString 方法
@NoArgsConstructor // 提供无参构造函数
@AllArgsConstructor // 提供全参构造函数
/**
 * 系统资源类，表示系统中的菜单项或功能资源
 * 实现了Serializable接口，以支持对象的序列化和反序列化
 */
public class SysResource implements Serializable {

    // 序列化ID，用于标识类的版本
    private static final Long serialVersionUID = 1L;

    // 资源的唯一标识符
    private Long id;

    // 菜单名称，不能为空，否则会抛出校验异常
    @NotBlank(message = "菜单名称不能为空")
    private String name;

    // 访问路径，表示该资源对应的路由路径
    private String path;

    // 菜单权限等级，表示该资源在权限层级中的级别
    private Integer level;

    // 父菜单的ID，用于建立菜单之间的层级关系
    private Long parentId;

    // 父菜单对象，直接引用当前资源的父资源
    private SysResource parent;

    // 子菜单列表，包含当前资源的所有直接子资源
    private List<SysResource> children;

}

